昨天處理完註冊的部分
因為在登入的 action 跟一般 resourece 給的CRUD不一樣,
所以我們要先給他路徑,
resource :users ,except: [:show, :destroy] do
collection do
get :login
post :logining
post :logout
end
end
然後幫他製作 login 的頁面,
login.html.erb
這裡的 form_with 不需要給他 model,
用 scope 代替就可以有 user 的前綴,
因為我們不是要 new 東西,也要另外給他路徑。
<%= form_with(scope: :user,
url: logining_users_path,
data: { turbo: false }) do |f| %>
<div>
<%= f.label :email%>
<%= f.email_field :email%>
</div>
<div>
<%= f.label :password%>
<%= f.password_field :password%>
</div>
<%= f.submit '登入' %>
<% end %>
然後是 controller
這裡就是要判斷,使用者輸入的信箱
跟密碼
,
是否有存在,
永遠要預計使用者會有很奇怪的舉動,
所以我們第一層要先判斷是否有填帳號跟密碼,
然後再去查詢是否有這個帳號密碼,來判斷他是否登入成功,
def login
end
def logining
email = params[:user][:email]
password = params[:user][:password]
if email.present? or password.present?
user = User.find_by(email: ,password:)
redirect_to root_path, notice: '登入成功'
else
redirect_to login_users_path, alert: '登入失敗'
end
end
登入之後,伺服器端需要判斷你是不是擁有這個帳號的,
在輸入正確的帳號密碼之後,要如何保持這個身分呢?
這時候就需要給成功登入的人發一個「身分證」!
這個身分證呢就是 「Session」,
Session 是 Web 開發中常用的概念,用於在伺服器和客戶端之間存儲和管理特定用戶的資訊。
它允許應用程式在一連串的 HTTP 請求中保留用戶的狀態資訊,通常用於儲存登入狀態、購物車內容、用戶設定等。Session 是一種伺服器端的技術,資訊被儲存在伺服器上。
下面是 Session 的一些重要特點和相關概念:
那還有一種儲存用戶訊息的大家應該都聽過,叫做 cookie
是瀏覽網站時由網路伺服器建立並由網頁瀏覽器存放在使用者電腦或其他裝置的小文字檔案。
在面試的時候,有被問到 Session 跟 Cookie 有什麼區別?
我主要列兩點:
1.位置存儲
Cookie 會存儲在瀏覽器裡面,而 Session 是存儲在伺服器端的。
2.安全性:
Cookie:可能存在安全風險,因為資訊存儲在客戶端,可以被修改或竊取。
Session:資訊存儲於伺服器端,相對較安全,用戶無法直接修改 Session 資料。
明天再來繼續 Session 的部分。